package picol.model.asa.inst;

import picol.model.asa.ASAChaine;
import picol.model.asa.expr.ASAExpr;
import picol.outputmanager.PSystem;

/**
 * Cette classe modelise l'instruction print
 * @author Aurélien Marcel - Julien Sanderson
 */
public class ASAInstPrint extends ASAInst {

    private ASAExpr expr;
    private ASAChaine chaine;

    public ASAInstPrint(ASAExpr _expr) {
        this.expr = _expr;
    }

    public ASAInstPrint(ASAChaine _chaine) {
        this.chaine = _chaine;
    }

    @Override
	/**
	 * Affiche sur la sortie definie dans le main le resultat d'une expresstion ou une chaine
	 */
    public void executer() {
        if (expr != null) {
			//Affiche une expression evalue
            PSystem.out.print(expr.evalue());
        } else {
			//Affiche une chaine
            PSystem.out.print(chaine);
        }
    }

	@Override
	/**
	 * Affiche sur la sortie definie dans le main le resultat d'une expresstion ou une chaine
	 * En mode debug
	 */
	public boolean executerDebug() {
		if(expr != null){
            PSystem.out.print(expr.evalue());
        } else {
            PSystem.out.print(chaine);
        }
        return true;
    }

    @Override
    public int getNbInst() {
        return 0;
    }
}
